package com.example.mapstruct.convert;

import com.example.mapstruct.dataobject.Person;
import com.example.mapstruct.dto.PersonDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

/**
 * mapstruct 工具类定义步骤：
 * 1、添加MapStruct jar包依赖
 * 2、新增接口或抽象类，并且使用org.mapstruct.Mapper注解标签修饰。
 * 3、添加自定义转换方法
 */
@Mapper
public interface PersonMapper {
    PersonMapper INSTANCT = Mappers.getMapper(PersonMapper.class);

    // 要忽略的字段
//    @Mapping(target = "age", ignore = true)
//    @MappingIgnore

    /**
     * 当属性在目标实体中具有不同的名称时，可以通过@Mapping注释指定其名称。
     * @param person
     * @return
     */
    @Mapping(source = "name", target="personName")

    // 可以设置默认值
    @Mapping(source = "describe", target = "describe", defaultValue = "默认值")
    PersonDTO convert(Person person);
}